package com.aluvfy.jdbc;

import com.aluvfy.jdbc.utils.DbUtils;

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Types;

/*通过JDBC代码调用存储过程*/
public class JDBCTest21 {
    public static void main(String[] args) {
        Connection conn = null;
        //专门执行存储过程的（CallableStatement继承了PreparedStatement）
        CallableStatement cs = null;

        try {
            conn = DbUtils.getConnection();

            String sql = "{call mypro(?, ?)}";

            //对以上的sql语句进行预编译
            cs = conn.prepareCall(sql);

            //给？占位符传值
            cs.setInt(1, 100);

            //将第二个占位符设置 注册为出参； 并且出参的数据类行是整数型
            cs.registerOutParameter(2, Types.INTEGER);

            //调用存储过程
            cs.execute();

            //获取出参的值
            int result = cs.getInt(2);
            System.out.println(result);


        } catch (SQLException e) {
            throw new RuntimeException(e);
        } finally {
            DbUtils.close(conn, cs, null);
        }


    }
}
